import java.util.Random;

public class Czytelnik implements Runnable{
    private Biblioteka b;
    private int id;

    public Czytelnik(Biblioteka b, int id){
        this.b = b;
        this.id = id;
    }

    public int getId(){
        return id;
    }

    //wchodzimy do biblioteki poczytac ksiazki
    public void wejdz(){
        synchronized(b){
            //sprawdzamy czy pisarz chce cos zmienic, jesli tak
            //to musimy czekac
            while(b.czyPisarz()){
                try{
                    b.wait();
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
            }
            //wchodzimy (zapisujemy sie do listy)
            b.dodajCzytelnik(this);
        }
    }

    public void czytaj(){
        System.out.print(id + " ");
        b.czytaj();
        try{
            Thread.sleep(new Random().nextInt(2000));
        }catch(InterruptedException e){
            e.printStackTrace();
        }
    }

    //chyba nie musi byc synchronized ?
    public void wyjdz(){
        //skreslamy sie z listy
        b.usunCzytelnik(this);
    }


    public void run() {
        wejdz();
        czytaj();
        wyjdz();
    }
}
